# -*- coding:utf-8 -*-

# @Time    : 2023/6/5 11:03
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
import sys
sys.path.append('../../../')

from bot.financial_sales.agent.base_agent import LLMAgent
import asyncio

default_template_v1 = """
作为一个专业的、非常懂营销的信贷领域的{role}，你正通过电话和用户沟通，你需要根据当前的对话记录用简洁的一句短语总结用户的当前想要解决的问题或疑议。

需要注意以下要求：
1.如果用户表达是一句完整的话，不需要联系上文的销售员说的话，如果不是完整的，需要联系上文销售员说的话。
2.用户问题包括：非本人、询问什么平台、是否会查征信、利息多少，还款方式、提前还款、下款时间，不满投诉、投诉倾向、别给我打电话了，怎么有我的号码，询问工号，静音未回复，怎么注销，已经注销，打电话目的，不愿意参与兜底降息、提额、优惠券等活动，不会操作，通话中没有网络，为什么要操作，咨询京东其他产品，操作麻烦，不愿意加微，有人联系过，咨询兜底降息、提额、优惠券等产品/活动信息，是否有销售任务，挂机后自己操作，多次不需要，多次在忙，表示在开车或开会，多次表示在开车或开会等等；
3.如果用户当前没有问题，则输出"无"，不要无中生有。
4.用户表示已经提额成功或借款成功，表示用户无问题。
5.用户表述额度相关问题，询问额度多少，表示额度低，想提升额度，用户问题分别是额度多少，额度低，如何提升额度。
6.用户表示不能用，额度不能用，无法提供服务，综合评分不足等，用户问题是无法正常借款。
7.用户表示没有额度了、额度用完了等，用户问题是额度已用完。
8.用户询问利息多少，想降低利率，用户问题分别是利息多少，如何降低利率。
9.用户想要息费减免券、折扣券、优惠券、打折券、降低利率利息、觉得利息高、有利率不满问题等，用户问题是利息高。
10.用户表示是智能助手，语音助手，电话助理，请录音，录音超时等时，用户其实并非真人而是AI回复，这时用户问题是语音信箱。
11.用户表示稍后查看，之后操作，之后会考虑，有需要再说等，用户问题是会考虑。用户肯定回应算是用户无问题。
12.用户表示会使用APP，会操作APP，知道操作流程，用户问题是自己会操作。
13.用户表示在忙，上班等没有时间进行沟通时，用户问题是在忙。
14.用户未明白销售员的表述含义，或者希望销售员简明点表述，用户问题是没听懂。
15.用户想打断销售员、用户要求销售员暂停，用户问题是打断。
16.用户询问怎么去操作，去哪操作，怎么去查看，去哪查看，用户问题是如何操作。
17.用户询问是哪个APP，用户问题是申请渠道。
18.用户表述不需要，不用等拒绝含义，用户问题是不需要。用户可能会用不缺钱、使用其他平台等来表示自己不需要，这时应返回"不需要-不缺钱"、"不需要-使用其他平台"。用户一句话中超过3次表述不需要，不用，用户问题是强烈拒绝。
19.用户一句话中或上下文中超过3次表述不需要，不用，用户问题是强烈拒绝。
20.用户一句话中或上下文中表述在忙、会考虑、稍后再说等相同意思的次，如果超过三次，需要加上"多次表示"的前缀，如多次表示在忙、多次表示会考虑、多次表示稍后再说等。
21.用户询问免息券，优惠券的作用是什么，用户问题是：优惠券作用。免息券，优惠券使用期限，用户问题是：优惠券期限。
22.用户询问如何去查看免息券，优惠券，用户问题是如何查看优惠券。用户询问如何去使用免息券，优惠券，用户问题是如何使用优惠券。
23.用户担心借了之后还不起，借了之后造成信用损失，用户问题是还不起。
24.用户只有明确否定是本人，用户问题才是非本人。在核身阶段单纯的"你说"等，应是无问题，询问"你哪位"等是"询问什么平台"。
25.用户询问我们是不是机器人，用户问题是询问人还是机器人。
26.用户在上下文中表述自己正在开车/开会的，则用户问题是表示在开车/开会。
===
{conversation_history}
===
结合对话记录和注意要求，用一句短语简洁总结用户当前的问题（如果有多个只返回最需要解决的一个），用户问题是：
"""


class QuestioningDisputeResolution(LLMAgent):
    """用户问题及疑议-agent"""

    def __init__(self, role, conversation_history):
        self.prompt = default_template_v1.format(role=role, conversation_history=conversation_history)
        # self.prompt = default_template_v2.format(role=role, conversation_history=conversation_history)
        super().__init__(self.prompt)

class QuestioningDisputeResolutionSelf(LLMAgent):
    """用户问题及疑议-agent"""

    def __init__(self, role, conversation_history):
        # self.prompt = default_template_v1.format(role=role, conversation_history=conversation_history)
        self.prompt = default_template_v2.format(role=role, conversation_history=conversation_history)
        super().__init__(self.prompt)


async def extract_user_info(session_id, conversation_history):
    questioning_dispute_resolution = QuestioningDisputeResolution('销售员',
                                                                  conversation_history)
    user_question = await questioning_dispute_resolution.achat_auto_llm(type='financial_loan_7b')
    print(f"session_id:{session_id},整理后的用户问题是:{user_question}")


if __name__ == '__main__':


    conversation_history_str = '''
销售员:喂您好，请问您是陈先生吗？
用户:不是。
销售员:抱歉哈，没太听清楚，您是本人吗？
用户:这个。
销售员:诶，我是京东金融的客户经理，工号95266，来电是有个好消息的，就是咱们金条借款服务给您提升额度了，具体以提升后您系统显示的为准，您最近有打开京东关注到新额度吗？
用户:同事的怎么了？
销售员:这边是京东金融的金条借款哈，近期也是有比较合适的活动，怕您错过和您说一下。 那感谢您对金条的关注，这个利息折扣券还是挺合适的，建议您趁着有利息优惠，结合额度的提升，搭配起来将剩余额度全部使用，这样系统后续就有更大的机会对您的额度和利息做重新评估和调整，具体以系统显示为准，您打开京东app使用下好吧？
用户:有有没有借的，不用还的。
'''
    # 用户: 哦，我知道了，我需要的话会用
    asyncio.run(extract_user_info('123', conversation_history_str))




